package com.sqfw.project.knowledge.mapper;

import java.util.List;

import com.sqfw.project.knowledge.domain.KlContentInfo;
import com.sqfw.project.knowledge.domain.query.KlHasNotwrongQuery;
import com.sqfw.project.knowledge.domain.vo.KlContentInfoCountVo;
import org.springframework.stereotype.Repository;

/**
 * 知识Mapper接口
 * 
 * @author tangxt
 * @date 2023-06-07
 */
@Repository
public interface KlContentInfoMapper 
{
    /**
     * 查询知识
     * 
     * @param klId 知识主键
     * @return 知识
     */
    public KlContentInfo selectKlContentInfoByKlId(String klId);

    /**
     * 查询知识列表
     * 
     * @param klContentInfo 知识
     * @return 知识集合
     */
    public List<KlContentInfo> selectKlContentInfoList(KlContentInfo klContentInfo);

    String getKlId();

    /**
     * 新增知识
     * 
     * @param klContentInfo 知识
     * @return 结果
     */
    public int insertKlContentInfo(KlContentInfo klContentInfo);

    /**
     * 修改知识
     * 
     * @param klContentInfo 知识
     * @return 结果
     */
    public int updateKlContentInfo(KlContentInfo klContentInfo);

    /**
     * 删除知识
     * 
     * @param klId 知识主键
     * @return 结果
     */
    public int deleteKlContentInfoByKlId(String klId);

    /**
     * 逻辑删除
     * */
    int deleteKlByKlId(String klId);

    /**
     * 物理删除
     * */
    int deleteByKlId(String klId);

    /**
     * 批量删除知识
     * 
     * @param klIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteKlContentInfoByKlIds(String[] klIds);

    /**
     * 有模糊查询，有时间范围查询
     * */
    List<KlContentInfo> queryKlContentInfoList(KlContentInfo klContentInfo);

    /**
     * 有模糊查询，有时间范围查询
     * */
    List<KlContentInfo> queryKlContentInfoList2(KlContentInfo klContentInfo);

    /**
     * 根据id进行in查询
     * */
    List<KlContentInfo> queryKlContentInfoByKlIds(List<String> klIds);


    List<KlContentInfo> retrievalKlContentInfo(KlContentInfo klContentInfo);


    List<KlContentInfo> queryHomeKlContentInfoList(KlContentInfo klContentInfo);

    List<KlContentInfo> queryHomeListOrderByUpdateTime(KlContentInfo klContentInfo);

    /**
     * 根据知识标题 in 查询
     * */
    List<KlContentInfo> queryKlContentInfoByTitle(KlContentInfo klContentInfo);

    /**
     * 获取序列化==主键id
     * */
    String createKlId();

    /**
     * 解锁知识
     * */
    int unlockKlContentInfo(String klId);

    /**
     * 统计三级承办单位主动添加知识
     *
     * */
    int countKlContentInfoByDeptId(KlContentInfo klContentInfo);


    List<KlContentInfo> queryLargeScreenKnowledge(KlContentInfo klContentInfo);

    int countKlContentInfoByReviewer(KlContentInfo klContentInfo);

    /**
     * 根据知识分类统计，目前只统计民政业务下的二级分类
     * */
    List<KlContentInfoCountVo> countByKnowledgeSortPid(String pid);

    /** 统计主动添加知识数量 */
    List<KlContentInfoCountVo> countByIsActiveAdd(KlHasNotwrongQuery query);

}
